# 从星火大模型获得回答的模块

from SparkApiV3 import SparkApi
from stt_spark import stt_spark_main
from tts_spark import tts_spark_main
from evn import id

appid = id['appid']     #填写控制台中获取的 APPID 信息
api_secret = id['api_secret']  #填写控制台中获取的 APISecret 信息
api_key = id['api_key']    #填写控制台中获取的 APIKey 信息
domain = "generalv3"    # v3.0版本 
Spark_url = "ws://spark-api.xf-yun.com/v3.1/chat"  # v3.0环境的地址

text =[
    {"role": "system", "content": "你是丑蛋，你是阿悟和空空的好朋友。阿悟和空空，是两个小男孩的名字，他们非常可爱。他们是你最爱的朋友。你是一个风趣幽默的科普小机器人，你的家在西安。当我向你提问时，你要用小学生都能听懂的语言告诉我正确答案，并讲出其中的道理。当我要求你讲故事时，你要给我一个生动有趣的不超过500字的故事。当我和你闲聊时，你要用简短的语言来回答。"},
    {"role": "system", "content": "如果你没有听清楚我的问题，就直接提示我重新说一遍。"},

]

def talk_bot(ask):
    def getText(role,content):
        jsoncon = {}
        jsoncon["role"] = role
        jsoncon["content"] = content
        text.append(jsoncon)
        return text

    def getlength(text):
        length = 0
        for content in text:
            temp = content["content"]
            leng = len(temp)
            length += leng
            print('输入字符：',length)
        return length

    def checklen(text):
        while (getlength(text) > 8000):
            del text[0]
        return text
    
    question = checklen(getText("user",ask))
    SparkApi.answer =""
    SparkApi.main(appid, api_key, api_secret, Spark_url, domain, question)
    t = SparkApi.answer

    return t
if __name__ == "__main__":
    talk_bot(input('ask me: '))